package main

import (
	"fmt"
	"sync"
	"time"
)

// 定义一个全局变量
var wg sync.WaitGroup

func test(){
	for i:=0;i<10;i++{
		fmt.Println("test()你好golang-",i)
			time.Sleep(time.Millisecond*100)
	}
	wg.Done()  //协程计数器-1
}

func test1(){
	for i:=0;i<10;i++{
		fmt.Println("test2()你好golang-",i)
			time.Sleep(time.Millisecond*100)
	}
	wg.Done()  //协程计数器-1
}


func main() {
	wg.Add(1) 	//协程计数器加1
	go test()
	wg.Add(1) 	//协程计数器加1
	go test1()  //表示开启一个协程
	wg.Wait()    //等待协程执行完毕
	fmt.Println("主线程退出")
	
	// 主线程执行完毕后即使协程没有执行完毕也会退出
	// 协程可以在主线程没有执行完毕前提前退出 协程是否执行完毕不会影响主线程的执行
	// sync.WaitGroup等待协程执行完毕
	// go test()  //表示开启一个协程
	// for i := 0; i < 10; i++ {
	// 	fmt.Println("main 你好,golang-",i)
	// 	//每隔50ms输出golang
	// 	time.Sleep(time.Millisecond*20)
	// }
	// wg.Wait()
	// fmt.Println()
	// time.Sleep(time.Second)
}